package com.garrett.demo.sys.dao;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import com.garrett.demo.sys.entity.Account;
import com.garrett.demo.sys.entity.SimsStudent;

import java.util.Arrays;
import java.util.Collections;

public class UserDaoExcelImp implements UserDao{

    private static final String DATA_PATH = "src/main/resources/demo.xlsx";
    /**
     * 根据用户编号获取用户信息
     *
     * @param id 用户编号
     * @return 用户信息
     */
    @Override
    public SimsStudent getUserById(String id) {
        return null;
    }

    /**
     * 根据登录账号获取用户信息
     *
     * @param account 账户名
     * @return 用户信息
     */
    @Override
    public Account getUserByAccount(String account) {
        final Account[] acc = {null};
        EasyExcel.read(DATA_PATH, Account.class, new PageReadListener<Account>(dataList -> {
            for (Account data : dataList) {
                if(data.getAccount().equals(account)) {
                    acc[0] = data; return;
                }
            }
        })).sheet().doRead();
        return acc[0];
    }

    /**
     * 注册账户信息
     *
     * @param account 账户
     */
    @Override
    public void addAccount(Account account) {
        // 这里 需要指定写用哪个class去读，然后写到第一个sheet，名字为模板 然后文件流会自动关闭
        // 如果这里想使用03 则 传入excelType参数即可
        EasyExcel.write(DATA_PATH, Account.class).sheet("account")
                .doWrite(Collections.singletonList(account));
    }

    /**
     * 添加学生信息
     *
     * @param student 学生信息
     */
    @Override
    public void createUser(SimsStudent student) {

    }
}
